IMPLEMENTATION MODULE ASCII[1]; (* Hady. 21-Jul-89. (c) KRONOS *)

CONST kinds = ARRAY OF CHAR {

(***************************************************************************)
(********    00     01     02     03     04     05     06     07    ********)
(***************************************************************************)
(* 000 *)   001c,  001c,  001c,  001c,  001c,  001c,  001c,  001c,  (* 007 *)
(* 010 *)   001c,  001c,  001c,  001c,  001c,  001c,  001c,  001c,  (* 017 *)
(* 020 *)   001c,  001c,  001c,  001c,  001c,  001c,  001c,  001c,  (* 027 *)
(* 030 *)   001c,  001c,  001c,  001c,  001c,  001c,  001c,  001c,  (* 037 *)
(* 040 *)   002c,  002c,  002c,  002c,  002c,  002c,  002c,  002c,  (* 047 *)
(* 050 *)   002c,  002c,  002c,  002c,  002c,  002c,  002c,  002c,  (* 057 *)
(* 060 *)   016c,  016c,  016c,  016c,  016c,  016c,  016c,  016c,  (* 067 *)
(* 070 *)   016c,  016c,  002c,  002c,  002c,  002c,  002c,  002c,  (* 077 *)
(* 100 *)   002c,  250c,  250c,  250c,  250c,  250c,  250c,  240c,  (* 107 *)
(* 110 *)   240c,  240c,  240c,  240c,  240c,  240c,  240c,  240c,  (* 117 *)
(* 120 *)   240c,  240c,  240c,  240c,  240c,  240c,  240c,  240c,  (* 127 *)
(* 130 *)   240c,  240c,  240c,  200c,  002c,  002c,  002c,  002c,  (* 137 *)
(* 140 *)   002c,  150c,  150c,  150c,  150c,  150c,  150c,  140c,  (* 147 *)
(* 150 *)   140c,  140c,  140c,  140c,  140c,  140c,  140c,  140c,  (* 157 *)
(* 160 *)   140c,  140c,  140c,  140c,  140c,  140c,  140c,  140c,  (* 167 *)
(* 170 *)   140c,  140c,  140c,  100c,  002c,  002c,  002c,  002c,  (* 177 *)
(* 200 *)   001c,  001c,  001c,  001c,  001c,  001c,  001c,  001c,  (* 207 *)
(* 210 *)   001c,  001c,  001c,  001c,  001c,  001c,  001c,  001c,  (* 217 *)
(* 220 *)   001c,  001c,  001c,  001c,  001c,  001c,  001c,  001c,  (* 227 *)
(* 230 *)   001c,  001c,  001c,  001c,  001c,  001c,  001c,  001c,  (* 237 *)
(* 240 *)   002c,  002c,  002c,  002c,  002c,  002c,  002c,  002c,  (* 247 *)
(* 250 *)   002c,  002c,  002c,  002c,  002c,  002c,  002c,  002c,  (* 257 *)
(* 260 *)   002c,  002c,  002c,  002c,  002c,  002c,  002c,  002c,  (* 267 *)
(* 270 *)   002c,  002c,  002c,  002c,  002c,  002c,  002c,  002c,  (* 277 *)
(* 300 *)   120c,  120c,  120c,  120c,  120c,  120c,  120c,  120c,  (* 307 *)
(* 310 *)   120c,  120c,  120c,  120c,  120c,  120c,  120c,  120c,  (* 317 *)
(* 320 *)   120c,  120c,  120c,  120c,  120c,  120c,  120c,  120c,  (* 327 *)
(* 330 *)   120c,  120c,  120c,  120c,  120c,  120c,  120c,  120c,  (* 337 *)
(* 340 *)   220c,  220c,  220c,  220c,  220c,  220c,  220c,  220c,  (* 347 *)
(* 350 *)   220c,  220c,  220c,  220c,  220c,  220c,  220c,  220c,  (* 357 *)
(* 360 *)   220c,  220c,  220c,  220c,  220c,  220c,  220c,  220c,  (* 367 *)
(* 370 *)   220c,  220c,  220c,  220c,  220c,  220c,  220c,  220c}; (* 377 *)
(***************************************************************************)

PROCEDURE KIND(c: CHAR): BITSET;
BEGIN
  RETURN BITSET(kinds[ORD(c)])
END KIND;

PROCEDURE SMALL(c: CHAR): CHAR;
BEGIN
  IF    latin IN BITSET(kinds[ORD(c)]) THEN c:=CHAR(BITSET(c)+{5})
  ELSIF cyril IN BITSET(kinds[ORD(c)]) THEN c:=CHAR(BITSET(c)-{5})
  END;
  RETURN c;
END SMALL;

PROCEDURE CAPITAL(c: CHAR): CHAR;
BEGIN
  IF    latin IN BITSET(kinds[ORD(c)]) THEN c:=CHAR(BITSET(c)-{5})
  ELSIF cyril IN BITSET(kinds[ORD(c)]) THEN c:=CHAR(BITSET(c)+{5})
  END;
  RETURN c;
END CAPITAL;

END ASCII.
